package com.xxxt.utils;

/**
 * <p>Description: 属性格式检验</p>
 * @author 蓝伟格
 * @date 2020-03-15 13:25:34
 */
public class PropertyCheckUtil {
	//账号（学号/工号/身份证/护照等等字母数字组合）
	public static boolean isAccount(String account) {
		return account.matches("^[a-z0-9_-]{3,32}$");
	}
	//学号
	public static boolean isSno(String sno) {
		return sno.matches("^[0-9]{12}$");
	}
	//姓名，包括中文姓名和英文姓名
	public static boolean isName(String name) {
		return name.length()>=2 && name.length()<=20 && name.matches("(^([\\u4E00-\\u9FA5]+[·•・●]?)*[\\u4E00-\\u9FA5]$)|(^([a-zA-Z]+(([·•・●\\.]?)|( {0,5})))*[a-zA-Z]$)");
	}
	
	//护照号
	public static boolean isPassport(String passport) {
		return passport.matches("^1[45][0-9]{7}$|(^[P|p|S|s]\\d{7}$)|(^[S|s|G|g|E|e]\\d{8}$)|(^[Gg|Tt|Ss|Ll|Qq|Dd|Aa|Ff]\\d{8}$)|(^[H|h|M|m]\\d{8,10}$)");
	}
	//身份证号，包括15位和18位
	public static boolean isIdCard(String id) {
		return id.matches("(^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$)|(^[1-9]\\d{5}\\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\\d{2}$)");
	}
	//电话
	public static boolean isPhone(String phone) {
		return phone.matches("^[0-9]{11}$");
	}
	//qq
	public static boolean isQQ(String qq) {
		return qq.length()>=5 && qq.length()<=11 && qq.matches("^[1-9]*[1-9][0-9]*$");
	}
	//寒假居住地的详细地址，需详细到门牌号
	public static boolean isWinterHabitat(String winterHabitat) {
		return winterHabitat.length()>2 && winterHabitat.length()<255 && winterHabitat.matches("[\\s\\S]*([0-9]+|[一二三四五六七八九十]+)[\\s\\S]*") && ! winterHabitat.matches("^\\s*$");
	}
	//返校居住地，详细到门牌号或者是宿舍号
	public static boolean isBackSchoolResidence(String place) {
		return place.length()>2 && place.length()<255 && place.matches("[\\s\\S]*([0-9]+|[一二三四五六七八九十]+)[\\s\\S]*") && ! place.matches("^\\s*$");
	}
}
